package edu.qd.learn.newchapter.chapter03.lambda;

import java.util.Vector;
import java.util.function.Predicate;

/**
 * 参数化类型（泛型）
 *
 * @author 布衣
 */
public class LearnParameterType<T> {

    /**
     * 设计角度来学习一下面向对象
     * @param ts 。。。
     * @param p  。。。
     */
    public Vector<T> print(T[] ts, Predicate<T> p) {
        Vector<T> v = new Vector<>();
        for (T t : ts) {
            if (p.test(t)) {
                v.add(t);
            }
        }
        return v;
    }

    public static void main(String[] args) {
        String[] names = new String[]{"绵延", "张三", "李四", "张三"};
        LearnParameterType<String> lpt = new LearnParameterType<>();
        Vector<String> v = lpt.print(names, x -> x.startsWith("张"));
//        length 数组;length() 字符串; size() 集合;
        for(int i = 0 ;i < v.size();i++){
            System.out.println(v.get(i));
        }

        Integer[] scores = new Integer[]{56, 67, 78, 90, 31};
        LearnParameterType<Integer> lpt1 = new LearnParameterType<>();
        lpt1.print(scores, x -> x > 60);
    }

}
